<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

</body>
<script>
  const list = [
    { name: '张三', id: 1, pid: 0 },
    { name: '王三', id: 2, pid: 0 },
    { name: '赵三', id: 3, pid: 0 },
    { name: '张小三', id: 4, pid: 1 },
    { name: '张小四', id: 5, pid: 1 },
    { name: '王小六', id: 6, pid: 2 }
  ]
  // 处理数据 列表数据 >= 树形数据
  function transListToTree(val) {
    // 准备空数组
    const arr = []
    // 循环数据
    list.forEach(item => {
      // 匹配子节点
      // 第一次会找到一级子节点
      if (item.pid === val) {
        // 一级字节点的子节点
        const childrenArr = transListToTree(item.id)
        // 如果找到的子节点有
        if (childrenArr.length) {
          item.children = childrenArr
        }
        arr.push(item)
      }
    })


    // 返回数据
    return arr
  }
  console.log(transListToTree(0));
</script>

</html>